<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

<html>

<head>

   <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

   <meta name="Author" content="Eclipse Project PMC">

   <meta name="GENERATOR" content="Microsoft FrontPage 4.0">

   <meta name="ProgId" content="FrontPage.Editor.Document">

   <title>Eclipse Project 2.0 Plan</title>

   <link rel="stylesheet" href="../default_style.css" type="text/css">

</head>

<body>



<h1>

Eclipse Project<br>

DRAFT 2.0 Plan</h1>

Last revised Friday, March 22, 2002 [<u><font color="#008000">noting changes since 
previous draft plan Friday, December 21, 2001</font></u>] 
<p><i>&nbsp;&nbsp;&nbsp; Please send comments about this draft plan to the </i><a href="mailto:eclipse-dev@eclipse.org">eclipse-dev@eclipse.org</a>
<i>developer mailing list.</i></p>

<p>This document lays out the plan for the next major release of the Eclipse Project, 
  designated release 2.0. The main emphasis of the Eclipse Project 2.0 release 
  will be on improving quality (bug fixing) and performance, with a lesser emphasis 
  on adding new features and APIs. 
<p>This plan serves at least two purposes. First, it serves as the blueprint guiding 
  the efforts of the developers working on the Eclipse Project subprojects. The 
  work items committed in this plan were selected over all others because they 
  were judged to provide the most value to customers for this follow-on to the 
  Eclipse Project 1.0 release. Second, this plan serves as an important input 
  to the planning processes of the various customers of the Eclipse Platform. 
  This plan tells them what to expect (or what not to expect) in the next release 
  so that they can plan their projects accordingly. 
<p>Plans are rarely completely unchanging over the life cycle of a release, and 
  this project is no exception. We will update this document as required to reflect 
  any changes to the 2.0 release plan. While we certainly do not expect to backtrack 
  on items already committed, we do anticipate adding further committed items 
  to the list. This plan already includes a number of extra work items which we 
  are presently unable to commit to for the 2.0 release due to time, but which 
  are nonetheless worthy of being solved. Where possible, we will try to complete 
  these items, and will revise this plan as soon as we know we can make a definite 
  commitment. The individual Eclipse Project <a href="http://www.eclipse.org/eclipse/index.html" target="_top">subproject 
  and component web pages</a> and <a href="http://www.eclipse.org/mail/index.html" target="_top">developer 
  mailing list archives</a> contain further, in-depth information about how a 
  component is changing. Particular problem reports being worked on for the 2.0 
  release can be tracked through the <a href="http://dev.eclipse.org/bugs/">bug 
  database</a>; the &quot;Target Milestone&quot; field reflects when a work item 
  will become available in the main development stream. 
<p>[<font color="#008000"><u>This draft plan has changed significantly over the 
  previous draft dated December 21, 2001. The Eclipse SDK user community has told 
  us that they want to see additional improvements in certain areas, and that 
  an early release that did not address their needs would be less interesting, 
  and would only delay the availability of the follow-on release that did address 
  their concerns. We therefore extended the development schedule to include a 
  number of new committed items, many of which were previously known but on the 
  uncommitted list. In addition, we deleted a few uncommitted items that we know 
  will not be done in the Eclipse Project 2.0 release, and revised several items 
  to more accurately describe what we will be doing. We added 3 more milestones 
  (M4, M5, M6), and are now targeting May 2002 for the Eclipse Project 2.0 release, 
  rather than April.</u></font>] 
<h2>Release deliverables</h2>

<p>The release deliverables are:

<ul>

  <li>Source code release for Eclipse Project, available as versions tagged &quot;R2_0&quot; 
    in the Eclipse Project <a href="http://dev.eclipse.org/viewcvs/">CVS repository</a>.</li>

  <li>Eclipse Project SDK (includes Platform, JDT, and PDE source zips)

    (downloadable).</li>

  <li>Eclipse Platform runtime binary distribution (downloadable).</li>

  <li>JDT runtime binary distribution (downloadable).</li>

  <li>Eclipse SDK Examples (downloadable).</li>

</ul>

<h2>Release milestones</h2>

<p>The release milestones are:</p>

<ul>

  <li>December 7, 2001 - milestone 0 - stable build reflecting progress</li>

  <li>December 21, 2001 - milestone 1 - stable build reflecting good progress</li>

  <li>January 25, 2002 - milestone 2 - stable build reflecting significant

    progress</li>

  <li>February 15, 2002 - milestone 3 - stable build reflecting significant

    progress [<u><font color="#008000">former initial development freeze</font></u>]</li>

  <li>[<u><font color="#008000">new milestone</font></u>] March 22, 2002 - milestone 
    4 - stable build reflecting significant progress</li>

  <li>[<u><font color="#008000">new milestone</font></u>] April 12, 2002 - milestone 
    5 - stable build reflecting significant progress</li>

  <li>[<u><font color="#008000">new milestone</font></u>] May 3, 2002 - milestone 
    6 - stable build - feature complete - initial development&nbsp; freeze</li>

</ul>

<p>

The 2.0 release is targeted for May 2002 [<u><font color="#008000">formerly
April</font></u>]. All release deliverables will be available for download

as soon as the release has been tested and validated in the target operating

configurations listed below.</p>

<h2>

Target Operating Environments</h2>



<p>Most of the Eclipse SDK is "pure" Java and has no direct dependence on the 
  underlying operating system. The chief dependence is therefore on the Java 2 
  Platform itself. The 2.0 release of the Eclipse Project will be written against 
  version 1.3 of the Java 2 Platform APIs, and targeted to run on either version 
  1.3 or 1.4 of the Java 2 Runtime Environment, Standard Edition.</p>

<p>We plan to test and validate the Eclipse SDK 2.0 on the most up-to-date Java 
  2 Platform implementations available. These are:</p>

<table border="1" width="91%">

  <tr>

    <td width="19%"><b>Operating system</b></td>

    <td width="24%"><b>Processor architecture</b></td>

    <td width="73%"><b>Java 2 Platforms</b></td>

  </tr>

  <tr>

    <td width="19%" rowspan="3">Microsoft<br>

      Windows</td>

    <td width="24%" rowspan="3">Intel x86</td>

    <td width="73%">Sun Java 2 SDK, Standard Edition, version 1.3.1 for

    Microsoft Windows</td>

  </tr>

  <tr>

    <td width="73%">IBM Developer Kit for Windows, Java 2 Technology Edition, version 1.3.0</td>

  </tr>

  <tr>

    <td width="73%">Sun Java 2 SDK, Standard Edition, version 1.4 for Microsoft 
      Windows</td>

  </tr>

  <tr>

    <td width="19%" rowspan="3">Linux</td>

    <td width="24%" rowspan="3">Intel x86</td>

    <td width="73%">Sun Java 2 SDK, Standard Edition, version 1.3.1 for Linux x86</td>

  </tr>

  <tr>

    <td width="73%">IBM Developer Kit for Linux, Java 2 Technology Edition, version 1.3.0</td>

  </tr>

  <tr>

    <td width="73%">Sun Java 2 SDK, Standard Edition, version 1.4 for Linux x86</td>

  </tr>

  <tr>

    <td width="19%" rowspan="2">Sun Solaris</td>

    <td width="24%" rowspan="2">SPARC</td>

    <td width="73%">Sun Java 2 SDK, Standard Edition, version 1.3.1 for Solaris

      SPARC</td>

  </tr>

  <tr>

    <td width="73%">Sun Java 2 SDK, Standard Edition, version 1.4 for Solaris 
      SPARC</td>

  </tr>

  <tr>

    <td width="19%">HP HP-UX</td>

    <td width="24%">hp9000 PA-RISC</td>

    <td width="73%"><span class="header">HP-UX SDK for the Java 2 platform,

      version 1.3.1 for hp9000 PA-RISC</span></td>

  </tr>

  <tr>

    <td width="19%">IBM AIX</td>

    <td width="24%">PowerPC</td>

    <td width="73%">IBM Developer Kit for AIX, Java 2 Technology Edition, version 1.3.0</td>

  </tr>

</table>

<p><span class="header">The following table describes the combinations of operating 
  system and Java 2 Platform used when testing the Eclipse SDK configurations. 
  The status column indicates the level of testing: Primary means a full tested 
  configuration; </span>Secondary means a configuration which is only lightly 
  tested; Untested means a configuration that has received no testing, but which 
  should work. Note that the Linux GTK configuration is considered early access 
  for the 2.0 release; it will be tested, but it is known in advance that it will 
  not be of product quality in this release.</p>

<table border="1" width="91%">

  <tr>

    <td width="11%"><b>Window system</b></td>

    <td width="28%"><b>Java 2 Platform<br>

      (see above table)</b></td>

    <td width="42%"><b>Operating Environment</b></td>

    <td width="19%"><b>Testing Status</b></td>

  </tr>

  <tr>

    <td width="11%" rowspan="5">Win32</td>

    <td width="28%" rowspan="5">Windows on Intel x86</td>

    <td width="42%">Windows 2000</td>

    <td width="19%">Primary</td>

  </tr>

  <tr>

    <td width="42%">Windows XP</td>

    <td width="19%">Primary</td>

  </tr>

  <tr>

    <td width="42%">Windows ME</td>

    <td width="19%">Secondary</td>

  </tr>

  <tr>

    <td width="42%">Windows 98SE</td>

    <td width="19%">Secondary</td>

  </tr>

  <tr>

    <td width="42%">Windows NT</td>

    <td width="19%">Secondary</td>

  </tr>

  <tr>

    <td width="11%" rowspan="6">Motif</td>

    <td width="28%" rowspan="3">&nbsp;

      <p>Linux on Intel x86</p>

      <p>&nbsp;</td>

    <td width="42%">RedHat Linux 7.2 x86</td>

    <td width="19%">Primary</td>

  </tr>

  <tr>

    <td width="42%">

SuSE Linux 7.3 x86</td>

    <td width="19%">Primary</td>

  </tr>

  <tr>

    <td width="42%">Other Linux; kernel version 2.4.7, and XFree86 version 4.1.0</td>

    <td width="19%">Untested</td>

  </tr>

  <tr>

    <td width="28%">Solaris on SPARC&nbsp;</td>

    <td width="42%">Sun Solaris 8 SPARC</td>

    <td width="19%">Primary</td>

  </tr>

  <tr>

    <td width="28%">HP-UX on hp9000 PA-RISC</td>

    <td width="42%">HP-UX 11i hp9000</td>

    <td width="19%">Primary</td>

  </tr>

  <tr>

    <td width="28%">AIX on PowerPC</td>

    <td width="42%">IBM

AIX 5.1 on PowerPC</td>

    <td width="19%">Primary</td>

  </tr>

  <tr>

    <td width="11%" rowspan="3">GTK</td>

    <td width="28%" rowspan="3">Linux on Intel x86</td>

    <td width="42%">RedHat Linux 7.2 x86 GTK 2.0</td>

    <td width="19%"><i>Early access</i></td>

  </tr>

  <tr>

    <td width="42%"> SuSE Linux 7.3 x86 GTK 2.0</td>

    <td width="19%"><i>Early access</i></td>

  </tr>

  <tr>

    <td width="42%">Other Linux; kernel version 2.4.7, and GTK 2.0</td>

    <td width="19%"><i>Early access; untested</i></td>

  </tr>

</table>

<h4>

Internationalization</h4>

<p> The Eclipse Platform is designed as the basis for internationalized products. 
  The user interface elements provided by the Eclipse SDK components, including 
  dialogs and error messages, are externalized. The English strings are provided 
  as the default resource bundles.</p>



<p>Latin-1 locales will be supported by the Eclipse SDK on all of the above operating 
  environments; DBCS and BIDI locales will be supported by the Eclipse SDK only 
  on Windows operating environments. [<font color="#008000"><u>In the previous 
  draft, internationalization was planned only for Windows operating environments.</u></font>]
<p>The Eclipse SDK will support the GB 18030, the new Chinese code page standard, 
  on Windows 2000 and XP only. Note that GB 18030 also requires locale and character 
  encoding support from the Java 2 Runtime Environment; this support is standard 
  in version 1.4, and also available in some 1.3 JREs.
<p>We will perform tests in German and Japanese locales.

<h4>

BIDI support</h4>

<p> The Eclipse SDK 2.0 is a development environment targeted at technical professionals 
  - not an end user application. However the Eclipse SDK 2.0 tools will permit 
  technical professionals who are working in English to build Hebrew/Arabic end 
  user Java programs which are themselves not based on the Eclipse SDK. The BIDI 
  support in the Eclipse SDK 2.0 allows a Java programmer to work with BIDI strings, 
  code comments, etc but the Eclipse SDK itself is not designed to be localized 
  for BIDI locales and its widget orientation can not be changed.</p>

<p>IMPORTANT: The above BIDI support is available only on Windows platforms.</p>

<h2>

Compatibility with Previous Release</h2>

The Eclipse SDK 2.0 will be upwards compatible with the Eclipse SDK 1.0 to the 
greatest extent possible. We anticipate a small number of areas where slavishly 
maintaining compatibility would not be in the best interests of the Platform or 
its clients. All such exceptions will be noted in the 2.0 release notes so that 
clients can assess the impact of these changes on their plug-ins and products. 
<p><b>Status of interim 1.0 APIs and plug-ins</b>: Some of the Eclipse SDK APIs 
  and plug-ins in 1.0 were marked as provisional (debug, for instance). These 
  APIs and plug-ins will either appear in stable, finished form in the 2.0 release, 
  or be removed. As anticipated (and advertised), these API changes will likely 
  break 1.0 client plug-ins that made use of that particular API in its early 
  form. Even if code appears to work with 2.0, it would still need to be completely 
  reviewed to ensure that it abides by the final API contracts.</p>

<p><b>API Contract Compatibility:</b> The Eclipse SDK 2.0 will be upwards contract-compatible 
  with the Eclipse SDK 1.0 unless noted. This means that programs in full compliance 
  with contracts specified in the Eclipse SDK 1.0 APIs will automatically be in 
  full compliance with the Eclipse SDK 2.0 APIs. (API is construed broadly to 
  include such things as plug-in extension points.) Downward contract compatibility 
  is not supported. There is no guarantee that compliance with the Eclipse SDK 
  2.0 APIs would ensure compliance with the Eclipse SDK 1.0 APIs. 
<p><b>Binary (plug-in) Compatibility:</b> The Eclipse SDK 2.0 will be upwards 
  binary-compatible with the Eclipse SDK 1.0 unless noted. This means that plug-ins 
  built for the Eclipse SDK 1.0 will continue to work correctly in the Eclipse 
  SDK 2.0 without change. Downward plug-in compatibility is not supported. Plug-ins 
  for the Eclipse SDK 2.0 are unlikely to be usable in the Eclipse SDK 1.0. Plug-ins 
  with hard-coded references in their plug-in manifest file to 1.0 versions of 
  prerequisite Eclipse Project plug-ins will not work in 2.0 as the plug-in version 
  numbers will be incompatible. 
<p><b>Source Compatibility:</b> The Eclipse SDK 2.0 will be upwards source-compatible 
  with the Eclipse SDK 1.0 unless noted. This means that source files written 
  to use the Eclipse SDK 1.0 APIs can be successfully compiled and run against 
  the Eclipse SDK 2.0 APIs. Since source incompatibilities are easy to deal with, 
  maintaining source compatibility is considered much less important than maintaining 
  contract and binary compatibility. Downward source compatibility is not supported. 
  If source files use new Eclipse SDK APIs, they will not be usable with an earlier 
  version of the Eclipse SDK. 
<p><b>Workspace Compatibility:</b> Eclipse SDK 2.0 will be upwards

workspace-compatible with Eclipse SDK 1.0 unless noted. This means that

workspaces and projects created with Eclipse SDK 1.0 can be successfully opened by Eclipse SDK

2.0 and upgraded to a 2.0 workspace.&nbsp; Individual plug-ins developed for

Eclipse SDK 1.0 should provide similar upwards compatibility for their workspace

metadata; plug-in developers are responsible for ensuring that their plug-ins

recognize 1.0 metadata and process it appropriately.&nbsp; Note: the interim

Eclipse SDK 1.0 plug-ins (ones with provisional APIs) are unlikely to automatically

upgrade their metadata to 2.0. User interface session state may be discarded
when a workspace is upgraded.&nbsp; Downward workspace compatibility is not supported. A workspace created

(or opened) by Eclipse SDK 2.0 will be unusable with an earlier version

of Eclipse SDK.&nbsp;&nbsp;

<p><b>Non-compliant usage of API's</b>: All non-API methods and classes, and certainly 
  everything in a package with &quot;internal&quot; in its name, are considered 
  implementation details which may vary between operating environment and are 
  subject to change without notice. Client plug-ins that directly depend on anything 
  other than what is specified in the Eclipse SDK API are inherently unsupportable 
  and receive no guarantees about compatibility within a single release much less 
  with an earlier release. Refer to <i><a href="http://www.eclipse.org/articles/Article-API%20use/eclipse-api-usage-rules.html">How 
  to Use the Eclipse API</a></i> for information about how to write compliant 
  plug-ins. 
<h2> Eclipse Project Subprojects</h2>

The Eclipse Project consists of 3 subprojects. Each subproject

is covered in its own section:

<blockquote><font size=+0><a href="#Eclipse Platform subproject">Eclipse Platform</a></font>

<br><font size=+0><a href="#Java development tooling (JDT) subproject">JDT - Java development tooling</a></font>

<br><font size=+0><a href="#Plug-in development environment (PDE) subproject">PDE - Plug-in development environment</a></font></blockquote>

<p>For each subproject, the items listed reflect new features of the Eclipse Platform, 
  or areas where existing features will be significantly reworked. Each item indicates 
  the component affected by that work item (many items involve coordinated changes 
  to several components). 
<p>Note that fixing bugs, improving test coverage, documentation, examples,

etc. are considered routine ongoing maintenance activities and are not

included in this plan unless they would also involve significant changes to the Platform.

<h3>

<a name="Eclipse Platform subproject">Eclipse Platform subproject</a></h3>

The following items reflect new features of the Eclipse Platform, or areas

where existing features will be significantly reworked. Each item indicates

the component affected by that work item (some items involve coordinated

changes to several components). Additional uncommitted items affecting these

components are listed in the <a href="#Uncommitted Items">Uncommitted Items</a>

section at the end.

<h4>

Platform Core component</h4>

The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-core-home/main.html">Platform

Core component</a> covers most of the Platform's non-UI infrastructure,

including the basic plug-in mechanism, resources in the workspace. The following

items are committed for 2.0:

<blockquote><b><a name="Improve Platform startup times">Improve Platform

startup times</a>.</b> Eclipse Platform startup times 1.0 reflect the speed of XML parsing for plug-in manifest files. As the sheer number of available

plug-ins can be expected to increase by an order of magnitude in the near future,

we need a more scalable solution to this problem. An improvement in startup

time will come with computing and caching the plug-in registry on disk.
  <p>[<u><font color="#008000">Replacement item</font></u>] <b><a name="Improve Ant integration and the build story">Improve 
    Ant integration and the build story</a>.</b> In 1.0, Ant is not as well integrated 
    into the workbench as it could be. In 2.0, we plan to make it more convenient 
    to run Ant scripts from the Workbench, including ones not originally written 
    for use inside the platform. We also plan to make the platform's build story 
    more transparent, and allow Ant steps to be included. These changes impact 
    the UI component as well. [formerly called <a name="Improve Ant integration"><b>Provide 
    first-class Ant integration</b></a><b>]</b> 
  <p><a name="Improve serviceability"><b>Improve serviceability</b></a><b>.</b>

Several factors make it difficult in 1.0 to debug an Eclipse Platform that

is failing in the field: startup failures are poorly diagnosed; error messages in the log sometimes contain little

or no useful information; the internal plug-in log file is busy while the

Platform is running, and gets erased as soon as the Platform is restarted.

We plan to improve the startup sequence, eliminate unhelpful error messages, take steps to help identify

which plug-in is the apparent source of an internal error, and ensure that

the information in the internal logs is more readily accessible. These changes will

also impact the UI component.<p>[<font color="#008000"><u>Replacement
  for previously uncommitted item</u></font>] <b><a name="Allow VCM control over rename/move/delete">Allow VCM control over
  rename/move/delete</a>.</b> VCM providers sometimes need tighter control    over how project resources are manipulated in the local file system. For instance, a project    directory might be a specially mounted remote file system located on a VCM server, and require    special server communication in order to delete, move, or change the name of a resource. Or the    VCM provider may track version history across move/renames. (Other clients would like a similar    opportunity to veto inappropriate name changes to their resources; this is a different concern.) We    will add a headless callback so that the relevant VCM provider will be able to control moves,    renames, and deletes. These changes will affect the VCM
  component as well.

  <p>[<u><font color="#008000">Previously uncommitted item (revised)</font></u>] <a name="Support unmanaged resources in managed projects"><b>Support

unmanaged resources in managed projects</b></a><b>.</b> Workspace projects often contain

files derived by processing other files; it is usually the case that these

derived files should not be under VCM, even though the rest of the files

in the project are. Workspace projects may also contain extra files or
  directories in which the VCM provider stores metadata; however, these files
  are not of direct interest to either the user or to regular plug-ins. There needs to be some means of dealing with
  these;

depending on the solution, this may require support from the UI as well as Core.</p>

  <p>[<u><font color="#008000">New item</font></u>] <b><a name="Improve support for product branding">Improve
  support for product branding</a>.</b>  We will make it easier to furnish custom product
  information such as splash screens, product startup configuration, distinctive icons for
  product branding, product-specific preference settings, etc.</blockquote>



<h4>

Installation and Update component</h4>

The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-update-home/main.html"> Installation and Update component</a> is responsible for installing and upgrading the Eclipse

Platform in the field. Eclipse SDK 1.0 contains an early version

of this component; it will be thoroughly reworked for 2.0. The following items

are committed for 2.0:

<blockquote>

  <p><b><a name="Redesign plug-in install and update story">Redesign

plug-in installation and update story</a>.</b>&nbsp; The 1.0 concepts of <i>component</i>

  and <i>configuration</i> will be replaced with a new concept called a <i>feature</i>.

  Features define the packaging structure for a group of related plug-ins,

  plug-in fragments, and optionally non-plug-in files. This change impacts the Core

component and the PDE subproject as well.</p>

  <p><b><a name="Improve installer flexiblilty">Improve installer </a><a name="Improve installer flexiblilty">flexibility</a>.</b>

  The standard Platform installer will be more flexible and support alternate

  packaging and site management schemes: structured site map for discovering

  available updates; improved granularity of downloads; accommodate native

  installers; feature-specific custom installers packaged with feature and

  executed during feature installation.</p>

</blockquote>



<h4>

Platform UI component</h4>

The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-ui-home/main.html">Platform

UI component</a> provides the generic workbench UI for the Eclipse Platform. The following

items are committed for 2.0:

<blockquote><b><a name="Improve accessibility - UI">Improve accessibility</a>.</b> 

  Applications selling to the US Government market are required to meet minimum 

  accessibility guidelines (<a href="http://www.section508.gov/" target="_top">Section 

  508</a>). The workbench and its standard views and wizards must meet minimum 

  accessibility guidelines, including mouse-less operation. The Eclipse Platform 

  needs to enable other client plug-ins to meet accessibility guidelines too. 

  This change also impacts the SWT component. 

  <p><b><a NAME="Improve editor management">Improve editor management</a>.</b>

Users are finding it difficult to work with many editors open simultaneously

in the Eclipse SDK 1.0 workbench, all seemingly stemming from the way editors

are currently managed. The workbench's approach to editor management will

be reviewed and revised to improve usability.

<p><b><a name="Improve interaction between editors and views">Improve

interaction between editors and views</a>.</b> There are some unfortunate interactions

between editors and views in Eclipse SDK 1.0 that make it difficult for views

to serve as "secondary windows" to an editor. Among other things, this

leads to poor integration of standard views. The workbench's current approach

to editors and views will be reviewed and revised to facilitate interaction

and improve integration.

<p><b><a name="Allow context menu contributions in Outline view">Allow

context menu contributions in Outline view</a>.</b> In Eclipse SDK 1.0, clients

have no control over the standard Outline view's popup context menu. This

will be addressed so that clients will be able to make contributions to

this menu.

<p><b><a name="Improve usability re: losing context">Improve usability

re: losing context</a>.</b> Some users have reported getting lost in the UI

and having to close all open editors and perspectives to get their workbench

back into a familiar state. The current approach will be reviewed and revised

to improve usability.

<p><b><a name="Improve the Task view">Improve the Task view</a>.</b>  The

standard Task view will be improved in the following areas: performance and

usability for large numbers of items in the view; context-sensitive help; and

making contributions to the view's context menu.<p><b><a name="Add support for working sets">Add support for working

  sets</a>.</b>  In 1.0, all resources in the workspace are equally accessible.

  The workbench will let the user define working sets of resources, suitable for

  providing more restricted contexts for browsing, searching, and the like.

<p>[<u><font color="#008000">Previously uncommitted item (revised)</font></u>] <a name="Improve usability of project natures"><b>Improve

usability of project natures</b></a><b>.</b> In Eclipse SDK 1.0, project natures are secretly

configured by the plug-ins that define them, leading to problems and blind

spots when projects have other natures as well. We will enrich the underlying
support for natures by adding declarative constraints between natures, and
expose them to the user in the form of &quot;capabilities&quot; which the user
may (re-)configure their project with. These

changes also affect the Core component.

<p>[<u><font color="#008000">Previously uncommitted item</font></u>] <a name="Improve consistency of saving workbench state"><b>Improve

consistency of saving workbench state</b></a><b>.</b> In Eclipse SDK 1.0, there are a

number of instances where user-configurable UI settings are not being persisted

between sessions. The UI will provide better support for saving important

UI state.

  <p>[<u><font color="#008000">New item</font></u>]
  <b><a name="Improve support for file encodings">Improve support for file encodings</a>.</b> 
  Editors and other tools need to have the correct file encoding in order to
  read or write text files. In Eclipse SDK 1.0, everything uses the default file
  encoding for the current locale. We will improve this for Eclipse SDK 2.0.<p>[<u><font color="#008000">New
  item</font></u>] <b><a name="Improve support for clipboard-based cut/copy/paste">Improve
  support for clipboard-based cut/copy/paste</a>.</b> There are several places in the
  workbench where cut/copy/paste are not enabled where
  they should be. The UI will allow clients to supply these actions so they work
  as expected.</blockquote>



<h4>

SWT component</h4>

The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-swt-home/main.html">SWT 
component</a> is the low-level widget toolkit used in the Eclipse Platform. The 
following items are committed for 2.0: 
<blockquote>

  <p><b><a name="Port to other window systems">Support additional&nbsp; window

  systems</a>.</b> Add support for new window system: GTK. Port Motif-based

  implementation to other operating systems: AIX, HP-UX, Solaris. Foster and

  encourage efforts to port to other window systems.

  <p>[<u><font color="#008000">Revised item</font></u>] <a name="Support GB18030"><b>Support 
    GB18030</b></a><b>.</b> GB 18030 is a new Chinese code page standard. Products 
    shipping into the China market are required to support this new standard. 
    The GB 18030 character encoding support is standard in Java 2 Runtime Environment 
    version 1.4, and also available in some 1.3 JREs.
  <p><b><a name="Utilize native Unicode support">Utilize

  Windows native Unicode support</a>.</b>  The SWT implementation will use

  native Unicode support on all Windows operating systems that support it (NT,

  2000, XP).<p><b>Improve Motif appearance and performance.</b> In 1.0,

  support for the Motif window system lags behind that of Windows. We plan to improve the

  appearance and performance of SWT on Motif.
  <p><font FACE="Times New Roman" COLOR="#000000">[</font><u><font FACE="Times New Roman" COLOR="#008000">New
  item</font></u><font FACE="Times New Roman" COLOR="#000000">] <b>Remove
  internal call to XinitThreads</b>. In 1.0 on Motif, the internal call that SWT
  makes on XinitThreads prevents drag and drop, and printing from working. In
  2.0, we will find a way to remove this impediment.</font></p>

</blockquote>



<h4>

VCM component</h4>

The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-vcm-home/main.html"> VCM component</a> provides version and configuration management for projects

in the workspace and attendant team support. The following items are committed for 2.0:

<blockquote><a name="Provide VCM API"><b>Provide an open VCM </b></a><b><a name="Provide VCM API">story</a>.</b> Eclipse SDK

1.0 includes CVS repository support, but has no official VCM API that allows

other version and configuration management systems to integrate into the

Platform. We will provide a simple API, extension points, and usage guidelines

so that VCM providers can adapt their repositories and integrate VCM product-specific

UI elements into the Eclipse SDK UI.
  <p>[<u><font color="#008000">Revised item</font></u>] <a name="Improve CVS repository integration"><b>Improve 
    CVS repository integration</b></a><b>.</b> In addition to converting the existing 
    CVS repository adapter to the new VCM API, CVS support will be improved, including: 
    support for CVS modules so that the platform can be connected to existing 
    CVS repositories; support for CVS patch facility so that CVS users can capture 
    changes to a project in a tangible form that can be submitted to others or 
    archived (this also involves the compare infrastructure); correct classification 
    of text and binary files.
</blockquote>



<ul><a name="Add mechanism for validating edits and saves"><b>Add mechanism

for validating edits and saves</b></a><b>.</b> Some VCM providers require a "heads up" when the user starts

to change the contents of a file open in an editor (e.g., to allow the file to

  be checked out and locked), or when the user is about to save the changed contents

back to disk. We will add a callback so that the relevant VCM provider will be

  able to register for advance notification with an opportunity to veto. This

  change also affects the UI and Core components.<p> <b><a name="Add non-versioning WebDAV repository support">Add non-versioning
  WebDAV repository
  support</a>.</b> 

  We plan to build a simple repository adapter for non-versioning WebDAV
  servers. This will allow users to share their files via any WebDAV compliant
  server. This also affects the Core component (target management API).</p>

</ul>



<h4>

Help component</h4>



<p>

The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-help-home/main.html"> Help component</a> organizes help contributions and presents them to the

user. The following items are committed for 2.0:</p>

<blockquote><p><b><a name="Simplify contribution mechanism">Simplify

  contribution mechanism</a>.</b> Based on feedback on 1.0, we plan to rework

  and simplify the help contribution mechanism. Online documentation created for 1.0  will

  need to be converted for 2.0.<p>[<u><font color="#008000">Revised
  item</font></u>] <a name="Use a separate web browser to present help"><b>Use

a separate web browser to present help</b></a><b>.</b> We will use an external

  web browser launched in a separate window to present all documentation and online help. This will allow help to be presented in a non-modal way.&nbsp;
  We will support one help browser for each target environment.&nbsp; Refer to the
  <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-help-home/eclipse_project_plan_2_0_supported_browsers.html">table</a>
  in the Help Component for additional information on supported browsers.
  <p><b><a name="Support live help">Support live help</a>.</b> We will support 
    the ability to trigger developer-supplied actions as a result of navigating 
    a link in the online documentation. The actions will execute within the Eclipse 
    Platform environment.
  <p>[<u><font color="#008000">Revised item</font></u>] <b><a name="Allow remote help content">Enable 
    help server</a>s.</b> It is often desirable to be able to make plug-in documentation 
    accessible to users that do not have the Eclipse Platform installed. We will 
    support configurations where online documentation can be hosted on a web server 
    and viewed through a regular web browser. [<u><font color="#008000">The former 
    &quot;Info Center&quot; item has been merged with this one.</font></u>] 
  <p>[<u><font color="#008000">Revised item</font></u>] <b><a name="Support standalone help">Support 
    standalone help</a>.</b> Developers will be able to reuse the Eclipse Platform 
    help function even in products that are not built using the Eclipse Platform 
    itself.&nbsp; 
  <p>[<u><font color="#008000">Previously uncommitted item (revised)</font></u>]
  <a name="Add help search support"><b>Add help search support</b></a><b>.</b>

 We will provide the ability to search help documentation, based on <a href="http://jakarta.apache.org/lucene/docs/index.html">Lucene</a>.
  Stemmers will be used when available for the language; for example, the Porter
  stemming algorithm is used for English.

</blockquote>



<h4>

Platform Debug component</h4>

The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-debug-home/main.html">Platform

Debug component</a> provides generic Core and UI for launching, running, and debugging

programs. The following items are committed for 2.0:

<blockquote><a name="Stabilize Debug API"><b>Stabilize Debug API</b></a><b>.</b>

In Eclipse SDK 1.0, all debug APIs were considered provisional and incomplete.

The Debug APIs will appear in finished, stable form.</blockquote>



<blockquote><a name="Add support for debugging procedural languages"><b>Add

support for debugging procedural languages</b></a><b>.</b> The Debug component will be extended to

  enable debuggers to be written for procedural languages (e.g., C) which get compiled to machine code and run

on standard hardware.

<p><a name="Add launch configurations"><b>Add launch configurations</b></a><b>.</b>

The Debug component will add a general mechanism and UI for the user to define launch

configurations describing how something is to be launched (e.g., command

line options).</blockquote>



<h4>

Scripting component</h4>

The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-scripting-home/main.html">Scripting
component</a> provides general support for scripting (other than Ant). The following
item is committed for 2.0:&nbsp;

<blockquote>
  <p>[<u><font color="#008000">New item</font></u>] <b><a name="Remove Scripting component">Remove
  Scripting component</a>.</b>

In Eclipse SDK 1.0, the scripting support was provisional and incomplete. It is now
  clear that we will not become real in the 2.0 timeframe. The Scripting
  component will be withdrawn from the Eclipse Platform (it may be
  re-introduced in a later release).</p>
</blockquote>



<h4>

<a name="Uncommitted Items">

Uncommitted Items</a> (Eclipse Platform subproject)</h4>

<p><i>N.B. The following is the list of important Eclipse Platform subproject 
  work items which we are presently unable to commit to for the 2.0 release. Wherever 
  possible, we will try to complete these items. Depending on how things work 
  out, we should be able complete some of them. However, we cannot promise that 
  we will complete any of them, and it would be unwise to gamble otherwise. Items 
  not completed for 2.0 will carry over to the planning of the next release. We 
  will revise this 2.0 plan as soon as we can definitively commit to any of them.</i></p>

<ul>
  <p> <a name="Add support for non-local files"><b>Add support for non-local files</b></a><b>.</b> 
    It is expensive to set up a workspace project containing a large number of 
    files that normally reside on remote server or file system. Core has a basic 
    mechanism that permits the workspace to contain placeholders for files and 
    folders necessarily resident in the local file system. The Core mechanism 
    will be augmented so that VCM can use it to hook it to retrieve files from 
    a remote server or file system on demand. The UI component is also affected.
  <p> <a name="Improve undo/redo in workbench"><b>Improve undo/redo in workbench</b></a><b>.</b> 
    In Eclipse SDK 1.0, undo and redo are poorly supported for workbench actions, 
    and it is still far too easy for a user to lose work. We will consider providing 
    an undo/redo service that will help decrease the risk of inadvertently losing 
    work. 
  <p><a name="Provide a standard Console view"><b>Provide a standard Console view</b></a><b>.</b> 
    In Eclipse SDK 1.0, there is a proliferation of consoles furnished by clients 
    (including JDT, PDE, Ant). The workbench will supply a standard Console view; 
    clients will be encouraged to use it instead of providing their own. These 
    changes will affect the UI component. 
  <p>[<u><font color="#008000">Deleted item</font></u>] <a name="Improve support for cheat sheets"><b>Improve 
    support for cheat sheets</b></a><b>.</b> In Eclipse SDK 1.0, the Welcome editor 
    is an example of a cheat sheet. A cheat sheet is an instance of a simple kind 
    of workflow support. We will continue to evolve the mechanisms behind cheat 
    sheets, including adding standard API for creating actions. These changes 
    will affect the UI component. [<font color="#008000"><u>This has turned out 
    to require a major effort, so we are removing this uncommitted item from the 
    2.0 plan.</u></font>]
  <p>[<u><font color="#008000">Deleted item</font></u>] <b><a name="Provide project interchange mechanism">Provide 
    project interchange mechanism</a>.</b> We will provide a way to export the 
    resources in one of more workspace projects to an archive file that it can 
    be saved for posterity or imported to another workspace. This affects the 
    Core and UI components.&nbsp; [<font color="#008000"><u>A consequence of the 
    new VCM story is that we do not need to provide a special mechanism for project 
    interchange. Therefore we are removing this uncommitted item from the 2.0 
    plan.</u></font>]
  <p>[<u><font color="#008000">Deleted item</font></u>] <b><a name="Provide additional internationalization support">Provide 
    additional internationalization support</a>.</b>&nbsp; We will enable the 
    Eclipse Platform to provide internationalization support for additional locales 
    on some Motif operating environments. This affects the SWT component. [<font color="#008000"><u>We 
    have added support for additional locales (see the Internationalization section 
    in this plan for more details).&nbsp; This uncommitted item is redundant, 
    so we are removing it from the 2.0 plan.</u></font>]
  <p>[<u><font color="#008000">New item</font></u>] <b><a name="Improve local resource history">Improve 
    local resource history</a>.</b> The workspace local resource history mechanism 
    keeps recent copies of modified or deleted files in order to help save the 
    user from losing data in common situations. In 1.0, many UI actions that the 
    user would reasonably expect to grow the history are not doing so, and there 
    is no obvious way to recover a saved state of a file once it has been deleted. 
    We plan to make the history facility more reliable and helpful for 2.0.
  <p>[<u><font color="#008000">New item</font></u>] <b><a name="Add ftp repository support">Add 
    ftp repository support</a>.</b> We plan to build a simple repository adapter 
    for ftp servers. This also affects the Core component (target management API).</p>
</ul>



<p>(End of items for Eclipse Platform subproject.)



<h3>

<a name="Java development tooling (JDT) subproject">Java development tooling (JDT) subproject</a></h3>

<a href="http://www.eclipse.org/jdt/index.html">

Java development tooling</a> (JDT) implements a Java IDE based on the Eclipse

Platform.

The following committed items reflect new features of JDT, or areas where existing

features will be significantly reworked.

<blockquote><a name="Reduce memory footprint for Java builder"><b>Reduce

memory footprint for Java builder</b></a><b>.</b> The internal data structures of

the Java incremental compilation mechanism is using more memory than necessary

or reasonable. By fundamentally changing the approach to how incremental

builds are done we expect to substantially reduce the memory footprint

without significantly increasing incremental compile times.

<p><b><a name="Improve Java search">Improve Java search</a>.</b> Java reference

searches in Eclipse SDK 1.0 are limited to named types in source files. This

will be addresses so to make it possible to find references in JAR libraries, and to distinguish read and write accesses to fields.

  <p><a name="Improve code assist"><b>Improve code assist</b></a><b>.</b> A number

of changes will improve usability of code assist: including method argument

names and types as hints; suggesting variable names; honoring visibility

constraints dictated by the context.

<p><b><a name="Upgrade Eclipse Java compiler to be compliant with version 1.4 of the Java 2 Platform">Upgrade

Eclipse Java compiler to be compliant with version 1.4 of the Java 2 Platform</a>.</b>

A new assertion feature was added in 1.4, and there were a few clarifications

in obscure corners of the Java language specification. The Eclipse Java compiler

will be upgraded to support 1.4, but will continue to support 1.3 via an option

setting.

<p><b><a name="Improve build classpath">Improve build classpath</a>.</b>

By adding a mechanism for explicitly exporting libraries on a project's

build classpath to downstream projects, it becomes possible to have a library

project (one with a JAR and no source folder) that can stand in for a project

containing source code. This change enables large scale development where

source code is contained in multiple, related Java projects, by providing

possibilities other than having all the source code projects in the workspace

at all times (expensive to build). Plug-in development is a direct beneficiary.

  <p><b><a name="Improve accessibility - JDT">Improve accessibility</a>.</b> Applications 

    selling to the US Government market are required by law to meet minimum accessibility 

    guidelines (<a href="http://www.section508.gov/" target="_top">Section 508</a>). 

    The JDT UI must meet minimum accessibility guidelines, and enable its client 

    plug-ins to meet accessibility guidelines as well. 

  <p>[<u><font color="#008000">Revised item</font></u>] <a name="Improve Java editor"><b>Improve Java editor</b></a>. Rework

menu bar contributions and context menu to improve usability; add a template

  facility with variable substitution; add navigation to a method's super

  implementation; add bracket matching; add error clueing; add line/column
  numbers.

<p><b><a name="Improve refactoring">Improve refactoring</a>.</b> 

Implement additional refactorings: extract variable, inline temporary, push-up

field/method, change method signature. Support reference updates in strings and

comments for move/rename refactorings.

<p>[<u><font color="#008000">Revised item</font></u>] <b><a name="Improve refactoring">Improve package

browsing</a></b>: Provide a more package-centric view for browsing. In 1.0, the

Packages view presents packages grouped by their containers. We will continue to
support the existing container based presentation; in addition, we are exploring
alternatives. We

will also add

support to show the structure of a compilation unit in the Packages

view.

<p><b><a name="Facilitate string externalization">Facilitate

</a><a name="Facilitate string externalization">string

externalization</a></b><b>.</b> Add a wizard that

allows the user to

externalizing string literals in Java source code into standard Java resource bundles.

<p>[<u><font color="#008000">Revised item</font></u>] <b><a name="Allow runtime parameters to the configured">Allow runtime
parameters to the configured</a>.</b> Using the new launch configuration mechanism

provided by the Platform Debug component will allow the working directory, runtime classpath,

boot classpath, extension directories, and other VM-type specific launch

parameters to be configured.

  <p>[<u><font color="#008000">Revised item</font></u>] <b><a name="Support hot code replace when debugging JDK 1.4 targets">Support 
    hot code replace when debugging compliant Java 1.4 targets</a>.</b> JDPA for 
    version 1.4 of the Java 2 Platform allow a class to be updated while under 
    the control of the debugger. In 1.0, this kind of support was only available 
    for IBM J9 targets. The Java debugger will be changed to support both.&nbsp; 
    Provide smart drop to frame that only removes affected frames from the stack.
  <p><b><a name="Enable JSP debugging with JPDA">Enable JSP debugging

with JPDA</a>.</b> The Java debugger will enable JSP debugging via a flexible source lookup algorithm and breakpoint setting mechanism.

<p><a name="Add debugger support for step filtering"><b>Add debugger

support for step filtering</b></a><b>.</b> The Java debugger will avoid stepping into

any class mentioned on a user-specified exclusion list.

<p><b><a name="Improve data inspectors">Improve data inspectors</a>.</b> We will

improve support in the debugger for inspecting objects, including running an

object's toString method to obtain a readable string that may be more

meaningful to the user.

  <p>[<u><font color="#008000">Previously uncommitted item</font></u>] <a name="Add API for Java abstract syntax tree"><b>Add

API for Java abstract syntax tree</b></a><b>.</b> In Eclipse SDK 1.0, refactoring uses

compiler internals for parsing and walking the abstract syntax trees (ASTs)

for Java source code. We will add API for creating and manipulating ASTs

that can serve as the basis for other clients like refactoring.&nbsp;</p>

  <p>[<u><font color="#008000">Previously uncommitted item</font></u>] <b><a name="Add field watchpoints">Support field

  watchpoints</a>.</b> We will add debugger support for field watchpoints.</p>

  <p>[<u><font color="#008000">Previously uncommitted item</font></u>] <a name="Improve Java editor"><b>Support editor key bindings</b></a>. Add support for user-configurable key

  bindings in the Java editor. This requires changes in the Platform UI

  component.<p>[<u><font color="#008000">New item</font></u>] <b><a name="Add support for JUnit">Add
  support for JUnit</a>.</b>  We will include special tooling for the popular <a href="http://www.junit.org/">JUnit
  unit test framework</a> to facilitate authoring and running of JUnit test
  cases.<p>[<u><font color="#008000">New
  item</font></u>] <b><a name="Add support for Javadoc generation">Add support for Javadoc
  generation</a>.</b> We will add an action for generating Javadoc for a Java
  project (note: requires a standard JDK).<p>[<u><font color="#008000">New
  item</font></u>] <b>Improve navigating to Javadoc.</b>
  We will add quick keyboard navigation from names in Java source code to the
  corresponding Javadoc, including the API Javadoc for names declared in
  libraries.</blockquote>



<h4>

<a name="Uncommitted Items">

Uncommitted Items</a> (Eclipse JDT subproject)</h4>

<p><i>N.B. The following is the list of important JDT subproject work items

which we are presently unable to commit to for the 2.0 release. Wherever

possible, we will try to complete these items. Depending on how things work out,

we should be able complete some of them. However, we cannot promise that we will

complete any of them, and it would be unwise to gamble otherwise. Items not

completed for 2.0 will carry over to the planning of the next release. We will

revise this 2.0 plan as soon as we can definitively commit to any of them.</i></p>



<blockquote>
  <p> <a name="Add conditional breakpoints"><b>Support conditional

  breakpoints</b></a><b>.</b> We will add debugger support

  for conditional breakpoints

with simple conditions, including simply object identity tests of the form

  &quot;this == id&quot; sufficient for object breakpoints.</p>

</blockquote>



<p>(End of items for Eclipse JDT subproject.)



<h3>

<a name="Plug-in development environment (PDE) subproject">Plug-in development environment (PDE) subproject</a></h3>

The <a href="http://www.eclipse.org/pde/index.html"> plug-in development environment</a> 
(PDE) consists of&nbsp;tools for developing plug-ins for the Eclipse Platform. 
For 2.0, the goal is to maintain the level of PDE support present in 1.0 while 
adding the necessary extensions that allow it to be the tool of choice for self-hosted 
Eclipse Project development. The following items are committed for 2.0: 
<blockquote> <b><a name="Improve accessibility - PDE">Improve accessibility</a>.</b> 

  Applications selling to the US Government market are required by law to meet 

  minimum accessibility guidelines (<a href="http://www.section508.gov/" target="_top">Section 

  508</a>). The PDE UI must meet minimum accessibility guidelines, and enable 

  its client plug-ins to meet accessibility guidelines as well. 

  <p><b><a name="Support revamped install and update story">Support

  revamped install and update story</a>.</b> PDE contains support for building

  the deployable form of a plug-in, or set of plug-ins. We will update PDE to

  support the revised install and update story.</p>

  <p><b><a name="Improve support for large scale multi-project plug-in development">Improve

  support for large scale multi-project plug-in development</a>.</b> We will improve support

  for large scale development efforts involving multiple plug-ins spread across

  several projects in the workspace.</p>

  <p>[<u><font color="#008000">New item</font></u>] <b><a name="Provide PDE API">Provide
  PDE API</a>.</b>  We will add an extension point to allow plug-ins to
  contribute wizards from creating new extensions in the PDE Plug-in Manifest
  editor, and expose PDE API needed by clients that provide such wizards.&nbsp;<p>[<u><font color="#008000">New item</font></u>]
  <b><a name="Source builds">Source builds</a>.</b>  In 1.0, the process used to
  create new Eclipse SDK drops from sources is only usable by the original
  development team. In 2.0, the magic will be removed and replaced by
  generally available scripts that anyone can use to build Eclipse SDK
  drops from sources.

</blockquote>



<p>(End of items for Eclipse PDE subproject.)

</body>

</html>

